package guet.imagan.progbuilder;

import guet.imagan.progbuilder.annotation.CompileCommand;
import guet.imagan.util.FileUtil;
import guet.imagan.util.ListUtil;

import java.util.List;

/**
 * 默认编译器的实现，实际编译器，都应该通过继承该编译器，实现更复杂的编译逻辑
 */
public abstract class DefaultCompiler extends Compiler {
	/**
	 * 根据当前Project对象，填充编译器命令行中的占位符，
	 * 默认编译器，假定了编译器命令行中包含如下占位符：
	 * （1）{srcFiles}:项目中所有源文件路径；
	 * (2){targetPath}:编译器编译生成的目标文件的存放路径
	 *
	 * @param cmd     命令行对象
	 * @param project 当前要编译的项目
	 */
	@Override
	public void populatePlaceHolder(List<String> cmd, Project project) {
		ListUtil.replaceFirst(cmd, CompileCommand.sourceFiles,
				FileUtil.getPathsOfFiles(project.getSrcFiles()));
		ListUtil.replaceFirst(cmd,CompileCommand.targetPath,
				project.getOutputDir().getAbsolutePath());
	}
}
